package com.nari.ncps.screen.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nari.ncps.screen.entity.PadEnvInfo;
import com.nari.ncps.screen.mapper.PadEnvInfoMapper;
import com.nari.ncps.screen.service.PadEnvInfoService;
import io.micrometer.common.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 环境信息表 服务实现类
 * </p>
 *
 * @author dongxiaoxu
 * @since 2025-10-15
 */
@Service
public class PadEnvInfoServiceImpl extends ServiceImpl<PadEnvInfoMapper, PadEnvInfo> implements PadEnvInfoService {


    @Autowired
    private PadEnvInfoMapper padEnvInfoMapper;

    @Override
    public PadEnvInfo ipInfo() {
        PadEnvInfo envInfo = new PadEnvInfo();
        LambdaQueryWrapper<PadEnvInfo> lqw = new LambdaQueryWrapper<>();
        lqw.eq(PadEnvInfo::getInUse,1);
        List<PadEnvInfo> list = padEnvInfoMapper.selectList(lqw);
        return list.get(0);
    }

    @Override
    public PadEnvInfo ipSet(String ip, String port,String desc) {

        LambdaUpdateWrapper<PadEnvInfo> luw = new LambdaUpdateWrapper<>();
        luw.set(PadEnvInfo::getInUse,0);
        padEnvInfoMapper.update(luw);

        LambdaQueryWrapper<PadEnvInfo> lqw = new LambdaQueryWrapper<>();
        lqw.eq(PadEnvInfo::getEIp,ip)
                .eq(StringUtils.isNotBlank(port),PadEnvInfo::getEPort,port);
        List<PadEnvInfo> padEnvInfos = padEnvInfoMapper.selectList(lqw);

        if(padEnvInfos.isEmpty()) {
            //新增
            PadEnvInfo envInfo = new PadEnvInfo();
            envInfo.setEIp(ip);
            envInfo.setEPort(port);
            envInfo.setInUse(1);
            envInfo.setEDesc(desc);
            padEnvInfoMapper.insert(envInfo);
        } else {
            //更新
            LambdaUpdateWrapper<PadEnvInfo> luw1 = new LambdaUpdateWrapper<>();
            luw1.set(PadEnvInfo::getEIp,ip)
                    .eq(StringUtils.isNotBlank(port),PadEnvInfo::getEPort,port);
            luw1.set(PadEnvInfo::getInUse,1);

            padEnvInfoMapper.update(luw1);
        }

        PadEnvInfo envInfoNew = new PadEnvInfo();
        envInfoNew.setEIp(ip);
        envInfoNew.setEPort(port);
        envInfoNew.setEDesc(desc);

        return envInfoNew;
    }
}
